/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * frmVentanaMantenerUsuarioNuevo.java
 *
 * Created 
 */

package GUI.Seguridad;

import BusinessEntity.*;
import BusinessLogic.*;
//import ElementosGlobales.Correo;
import GUI.Seguridad.*;
import GUI.Mensajes.*;
import java.awt.Color;
import java.awt.Font;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import GUI.Mensajes.*;
import GUI.Principal.frmVentanaPrincipal;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;
import javax.swing.JTextField;



/**
 *
 * @author guillermo
 */
public class frmVentanaMantenerUsuario extends javax.swing.JFrame {

    private int intTamañoNombres=1;
    private int intTamañoApellidoPaterno=1;
    private int intTamañoApellidoMaterno=1;

    private UsuarioBE objUsuarioBE=new UsuarioBE();
    private UsuarioBE objUsuarioLogueadoBE;

    private UsuarioBL objUsuarioBL=new UsuarioBL();
    private ArrayList<UsuarioBE> arrUsuarios = new ArrayList<UsuarioBE>();
   private PerfilBE objPerfilBE = new PerfilBE();
        private PerfilBL objPerfilBL = new PerfilBL();
        private ArrayList<PerfilBE> arrPerfiles = new ArrayList<PerfilBE>();
    // esto es para auditoria, valido para todos los modulos
    private LogUsuarioBE objLogUsuarioBE;
    private LogUsuarioBL objLogUsuarioBL;
    private TransaccionBE objTransaccionBE;
    private TransaccionBL objTransaccionBL;
    private String ConsultaRealizada="Usuario";
    private String Accion=""; // si es registrar, modificar, eliminar
    private int codmodulo=3; // es 3 xq segun la tabla el codigo de modulo de usuario es 3
    private int codusuario=0; // el usuario que se logueo
    private int codlog=0;
    private boolean resp;
   //// fin de lo agregado para auditoria

   int intTamañoCodigo= 1;

    DateFormat df= new SimpleDateFormat("yyyy-MM-dd");
   


    /** Creates new form frmVentanaMantenerUsuarioNuevo */
    public frmVentanaMantenerUsuario() {
//        this.objUsuarioLogueadoBE=objUsuarioLogueado;
        initComponents();
//        

        objPerfilBE.setEstado("Activo");
        objPerfilBE.setPerfil("");
        
        try{
            arrPerfiles = (ArrayList<PerfilBE>) objPerfilBL.buscarPerfiles(objPerfilBE);
            this.cmbPerfilUsuario.addItem("--Seleccione--");
            for (PerfilBE obj : arrPerfiles ){
                System.out.printf("%s\n",obj.getPerfil());
               this.cmbPerfilUsuario.addItem(obj.getPerfil());
            }
        }catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Error en listar perfiles"," Mensaje ",JOptionPane.ERROR_MESSAGE);
        }

    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        pnlBusquedaUsuario = new javax.swing.JPanel();
        pnlDatosUsuario = new javax.swing.JPanel();
        lblCodigo = new javax.swing.JLabel();
        lblNombres = new javax.swing.JLabel();
        lblApePaterno = new javax.swing.JLabel();
        lblApeMaterno = new javax.swing.JLabel();
        lblPerfilUsuario = new javax.swing.JLabel();
        txtCodigo = new javax.swing.JTextField();
        txtNombres = new javax.swing.JTextField();
        txtApePaterno = new javax.swing.JTextField();
        txtApeMaterno = new javax.swing.JTextField();
        cmbPerfilUsuario = new javax.swing.JComboBox();
        pnlListaUsuarios = new javax.swing.JPanel();
        scpCarteras = new javax.swing.JScrollPane();
        tblUsuario = new javax.swing.JTable();
        btnNuevo = new javax.swing.JButton();
        btnModificar = new javax.swing.JButton();
        btnEliminar = new javax.swing.JButton();
        btnCerrar = new javax.swing.JButton();
        btnLimpiar = new javax.swing.JButton();
        btnBuscar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Administrar Usuarios");
        setAlwaysOnTop(true);

        pnlBusquedaUsuario.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Búsqueda de Usuarios", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("DejaVu Sans", 0, 12), java.awt.Color.blue)); // NOI18N
        pnlBusquedaUsuario.setName("pnlBusquedaUsuario"); // NOI18N

        pnlDatosUsuario.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Datos Usuario", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("DejaVu Sans", 0, 12), java.awt.Color.blue)); // NOI18N

        lblCodigo.setFont(new java.awt.Font("DejaVu Sans", 0, 12));
        lblCodigo.setText("Código :");

        lblNombres.setFont(new java.awt.Font("DejaVu Sans", 0, 12));
        lblNombres.setText("Nombres :");
        lblNombres.setName("lblNombres"); // NOI18N

        lblApePaterno.setFont(new java.awt.Font("DejaVu Sans", 0, 12));
        lblApePaterno.setText("Apellido Paterno :");
        lblApePaterno.setName("lblApePaterno"); // NOI18N

        lblApeMaterno.setFont(new java.awt.Font("DejaVu Sans", 0, 12)); // NOI18N
        lblApeMaterno.setText("Apellido Materno :");
        lblApeMaterno.setName("lblApeMaterno"); // NOI18N

        lblPerfilUsuario.setFont(new java.awt.Font("DejaVu Sans", 0, 12));
        lblPerfilUsuario.setText("Perfil de Usuario :");
        lblPerfilUsuario.setName("lblPerfilUsuario"); // NOI18N

        txtCodigo.setFont(new java.awt.Font("DejaVu Sans", 0, 12)); // NOI18N
        txtCodigo.setName("txtCodigo"); // NOI18N
        txtCodigo.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                txtCodigoFocusGained(evt);
            }
        });
        txtCodigo.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtCodigoKeyTyped(evt);
            }
        });

        txtNombres.setFont(new java.awt.Font("DejaVu Sans", 0, 12)); // NOI18N
        txtNombres.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtNombresKeyTyped(evt);
            }
        });

        txtApePaterno.setFont(new java.awt.Font("DejaVu Sans", 0, 12)); // NOI18N
        txtApePaterno.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtApePaternoKeyTyped(evt);
            }
        });

        txtApeMaterno.setFont(new java.awt.Font("DejaVu Sans", 0, 12)); // NOI18N
        txtApeMaterno.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtApeMaternoKeyTyped(evt);
            }
        });

        cmbPerfilUsuario.setFont(new java.awt.Font("DejaVu Sans", 0, 12)); // NOI18N
        cmbPerfilUsuario.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                cmbPerfilUsuarioKeyTyped(evt);
            }
        });

        javax.swing.GroupLayout pnlDatosUsuarioLayout = new javax.swing.GroupLayout(pnlDatosUsuario);
        pnlDatosUsuario.setLayout(pnlDatosUsuarioLayout);
        pnlDatosUsuarioLayout.setHorizontalGroup(
            pnlDatosUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlDatosUsuarioLayout.createSequentialGroup()
                .addGap(30, 30, 30)
                .addGroup(pnlDatosUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lblNombres, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblCodigo))
                .addGap(18, 18, 18)
                .addGroup(pnlDatosUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(txtNombres, javax.swing.GroupLayout.DEFAULT_SIZE, 176, Short.MAX_VALUE)
                    .addComponent(txtCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, 176, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 137, Short.MAX_VALUE)
                .addGroup(pnlDatosUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(pnlDatosUsuarioLayout.createSequentialGroup()
                        .addComponent(lblApeMaterno, javax.swing.GroupLayout.PREFERRED_SIZE, 118, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtApeMaterno))
                    .addGroup(pnlDatosUsuarioLayout.createSequentialGroup()
                        .addGroup(pnlDatosUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(lblPerfilUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(lblApePaterno, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(pnlDatosUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(txtApePaterno)
                            .addComponent(cmbPerfilUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 287, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addGap(68, 68, 68))
        );
        pnlDatosUsuarioLayout.setVerticalGroup(
            pnlDatosUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlDatosUsuarioLayout.createSequentialGroup()
                .addGroup(pnlDatosUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlDatosUsuarioLayout.createSequentialGroup()
                        .addComponent(lblCodigo)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(lblNombres))
                    .addGroup(pnlDatosUsuarioLayout.createSequentialGroup()
                        .addComponent(txtCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtNombres, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(pnlDatosUsuarioLayout.createSequentialGroup()
                        .addGroup(pnlDatosUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(lblPerfilUsuario)
                            .addComponent(cmbPerfilUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(pnlDatosUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(txtApePaterno, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(lblApePaterno, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(pnlDatosUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(lblApeMaterno)
                            .addComponent(txtApeMaterno, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap(24, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout pnlBusquedaUsuarioLayout = new javax.swing.GroupLayout(pnlBusquedaUsuario);
        pnlBusquedaUsuario.setLayout(pnlBusquedaUsuarioLayout);
        pnlBusquedaUsuarioLayout.setHorizontalGroup(
            pnlBusquedaUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlBusquedaUsuarioLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(pnlDatosUsuario, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        pnlBusquedaUsuarioLayout.setVerticalGroup(
            pnlBusquedaUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlBusquedaUsuarioLayout.createSequentialGroup()
                .addComponent(pnlDatosUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pnlListaUsuarios.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Lista de Usuarios", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("DejaVu Sans", 0, 12), java.awt.Color.blue)); // NOI18N

        tblUsuario.setFont(new java.awt.Font("DejaVu Sans", 0, 12));
        tblUsuario.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Código", "Nombre", "Apellido Paterno", "Apellido Materno", "Estado", "Perfil"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, true, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        scpCarteras.setViewportView(tblUsuario);

        javax.swing.GroupLayout pnlListaUsuariosLayout = new javax.swing.GroupLayout(pnlListaUsuarios);
        pnlListaUsuarios.setLayout(pnlListaUsuariosLayout);
        pnlListaUsuariosLayout.setHorizontalGroup(
            pnlListaUsuariosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlListaUsuariosLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(scpCarteras, javax.swing.GroupLayout.DEFAULT_SIZE, 929, Short.MAX_VALUE)
                .addContainerGap())
        );
        pnlListaUsuariosLayout.setVerticalGroup(
            pnlListaUsuariosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlListaUsuariosLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(scpCarteras, javax.swing.GroupLayout.DEFAULT_SIZE, 182, Short.MAX_VALUE)
                .addContainerGap())
        );

        btnNuevo.setFont(new java.awt.Font("DejaVu Sans", 1, 12));
        btnNuevo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/NuevoUsuario.png"))); // NOI18N
        btnNuevo.setText("Nuevo");
        btnNuevo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNuevoActionPerformed(evt);
            }
        });

        btnModificar.setFont(new java.awt.Font("DejaVu Sans", 1, 12));
        btnModificar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/EditarUsuario.png"))); // NOI18N
        btnModificar.setText("Modificar");
        btnModificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnModificarActionPerformed(evt);
            }
        });

        btnEliminar.setFont(new java.awt.Font("DejaVu Sans", 1, 12));
        btnEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/EliminarUsuario.png"))); // NOI18N
        btnEliminar.setText("Eliminar");
        btnEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEliminarActionPerformed(evt);
            }
        });

        btnCerrar.setFont(new java.awt.Font("DejaVu Sans", 0, 12));
        btnCerrar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/Cancelar.png"))); // NOI18N
        btnCerrar.setText("Cancelar");
        btnCerrar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnCerrarMouseClicked(evt);
            }
        });
        btnCerrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCerrarActionPerformed(evt);
            }
        });

        btnLimpiar.setFont(new java.awt.Font("DejaVu Sans", 1, 12));
        btnLimpiar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/Limpiar.png"))); // NOI18N
        btnLimpiar.setText("Limpiar");
        btnLimpiar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnLimpiarActionPerformed(evt);
            }
        });

        btnBuscar.setFont(new java.awt.Font("DejaVu Sans", 1, 12));
        btnBuscar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/BuscarUsuario.png"))); // NOI18N
        btnBuscar.setText("Buscar");
        btnBuscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnBuscarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(pnlBusquedaUsuario, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(btnNuevo)
                        .addGap(18, 18, 18)
                        .addComponent(btnModificar)
                        .addGap(18, 18, 18)
                        .addComponent(btnEliminar)
                        .addGap(18, 18, 18)
                        .addComponent(btnLimpiar)
                        .addGap(18, 18, 18)
                        .addComponent(btnBuscar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 285, Short.MAX_VALUE)
                        .addComponent(btnCerrar))
                    .addComponent(pnlListaUsuarios, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnNuevo)
                    .addComponent(btnModificar)
                    .addComponent(btnEliminar)
                    .addComponent(btnCerrar)
                    .addComponent(btnLimpiar)
                    .addComponent(btnBuscar))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(pnlBusquedaUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(pnlListaUsuarios, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(18, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNuevoActionPerformed
        // TODO add your handling code here:
        new frmVentanaUsuario(null,1).setVisible(true);
        this.dispose();
}//GEN-LAST:event_btnNuevoActionPerformed

    private void btnCerrarMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnCerrarMouseClicked
        // TODO add your handling code here:
        this.setVisible(false);
}//GEN-LAST:event_btnCerrarMouseClicked

    private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCerrarActionPerformed
        // TODO add your handling code here:
        this.setVisible(false);
    }//GEN-LAST:event_btnCerrarActionPerformed

    private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBuscarActionPerformed
        // TODO add your handling code here:
        buscarUsuario();
    }//GEN-LAST:event_btnBuscarActionPerformed

    private void btnLimpiarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLimpiarActionPerformed
        // TODO add your handling code here:
        this.txtApeMaterno.setText("");
        this.txtApePaterno.setText("");
        this.txtCodigo.setText("");
        this.txtNombres.setText("");
        this.cmbPerfilUsuario.setSelectedIndex(0);
        DefaultTableModel modelo= new DefaultTableModel();
        modelo =(DefaultTableModel)tblUsuario.getModel();
        while(modelo.getRowCount()>0)
            modelo.removeRow(0);
        
    }//GEN-LAST:event_btnLimpiarActionPerformed

    private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnModificarActionPerformed
        // TODO add your handling code here:
         if(this.tblUsuario.getSelectedRow()==-1){
             String texto="Error - Por favor seleccionar un usuario";
             new dlgAvisoError(javax.swing.JOptionPane.getFrameForComponent(this),true, texto).setVisible(true);
        }else{
            UsuarioBE objUsuario= this.arrUsuarios.get(this.tblUsuario.getSelectedRow());
            if ((objUsuario.getEstado().equals("Activo")) || (objUsuario.getEstado().equals("ACTIVO"))){
                frmVentanaUsuario ventanaUsuario = new frmVentanaUsuario(objUsuario,2);
                ventanaUsuario.setVisible(true);
                cargarTabla(null,null,2);
                this.dispose();
            }else{
            }
        }
    }//GEN-LAST:event_btnModificarActionPerformed
     public TransaccionBE cargarTransaccion(UsuarioBE objUsuarioBE,String Accion,int codmodulo,int codusuario,int codlog){

        Date fecha = new Date();

        objTransaccionBE = new TransaccionBE();
        objTransaccionBE.setFecha(fecha);
//        objTransaccionBE.setObjUsuarioBE(objUsuarioBE);
//        objTransaccionBE.setCodModulo(codmodulo);
//        objTransaccionBE.setConsultaRealizada(ConsultaRealizada);
//        objTransaccionBE.setAccion(Accion);
//        objTransaccionBE.setCodlog(codlog);


         return   objTransaccionBE;

    }
    private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarActionPerformed
        // TODO add your handling code here:
         if(this.tblUsuario.getSelectedRow()==-1){
             String texto="Por favor seleccionar un usuario";
             new dlgAvisoError(javax.swing.JOptionPane.getFrameForComponent(this),true, texto).setVisible(true);
        }else{
            UsuarioBE objUsuario= this.arrUsuarios.get(this.tblUsuario.getSelectedRow());
            if ((objUsuario.getEstado().equals("Activo")) || (objUsuario.getEstado().equals("ACTIVO")))  {
                dlgAvisoConfirmacion aviso=new dlgAvisoConfirmacion(javax.swing.JOptionPane.getFrameForComponent(this),true,"Desea continuar con la operacion?");
                aviso.setVisible(true);

                 if(aviso.getReturnStatus()==1) {
                    objUsuarioBL.eliminarUsuario(objUsuario, 2);
                    // se agrega para auditoria
                     objTransaccionBE = new TransaccionBE();
                     objTransaccionBL = new TransaccionBL();
                     Accion="Eliminar";
                     objUsuario=frmVentanaPrincipal.usuarioActual;
                     codlog=frmVentanaPrincipal.logActual;
                     codusuario = objUsuario.getCodUsuario();
                     objTransaccionBE = cargarTransaccion(objUsuario,Accion,codmodulo,codusuario,codlog);
                     resp=objTransaccionBL.registrarTransaccion(objTransaccionBE);
                     // fin de lo agregado para auditoria
                    String texto = "Usuario Eliminado correctamente";
                    dlgAvisoExito exito=new dlgAvisoExito(javax.swing.JOptionPane.getFrameForComponent(this),true,texto);
                    exito.setVisible(true);
                    arrUsuarios = this.objUsuarioBL.listarUsuario(objUsuarioBE);
                    cargarTabla(null,null,2);
                 }
            }else{
            }
        }
    }//GEN-LAST:event_btnEliminarActionPerformed

    private void txtCodigoFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtCodigoFocusGained

    }//GEN-LAST:event_txtCodigoFocusGained

    private void txtCodigoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtCodigoKeyTyped
        // TODO add your handling code here:
         // TODO add your handling code here:
        char caracter = evt.getKeyChar();
        this.intTamañoCodigo=this.txtCodigo.getText().length()+1;
       if( (caracter < '0') || (caracter > '9') ){
            evt.consume(); // ignorar el evento de teclado
        }
        if (this.intTamañoCodigo > 5){
            evt.consume();
        }
        if ((caracter == '\b') && (this.intTamañoCodigo > 1)){
            this.intTamañoCodigo -= 1;
        } else
            if ( (this.intTamañoCodigo <=5) && (caracter != '\b')
                 && ( (caracter >= '0') && (caracter <= '9') ) ){
                this.intTamañoCodigo += 1;
        }
    }//GEN-LAST:event_txtCodigoKeyTyped

    private void txtNombresKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtNombresKeyTyped
        // TODO add your handling code here:
         char caracter = evt.getKeyChar();
        this.intTamañoNombres=this.txtNombres.getText().length()+1;
        if( (caracter >= '0') && (caracter <= '9') ){
            evt.consume(); // ignorar el evento de teclado
        }

        if (this.intTamañoNombres > 50){
            evt.consume();
        }
        if ((caracter == '\b') && (this.intTamañoNombres > 1)){
            this.intTamañoNombres -= 1;
        } else
            if ( (this.intTamañoNombres <=50) && (caracter != '\b')
                 && ( (caracter < '0') || (caracter > '9')) ){
            this.intTamañoNombres += 1;
        }
    }//GEN-LAST:event_txtNombresKeyTyped

    private void txtApePaternoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtApePaternoKeyTyped
        // TODO add your handling code here:
            char caracter = evt.getKeyChar();
        this.intTamañoApellidoPaterno=this.txtApePaterno.getText().length()+1;
        if( (caracter >= '0') && (caracter <= '9') ){
            evt.consume(); // ignorar el evento de teclado
        }
        if (this.intTamañoApellidoPaterno > 50){
            evt.consume();
        }
        if ((caracter == '\b') && (this.intTamañoApellidoPaterno > 1)){
            this.intTamañoApellidoPaterno -= 1;
        } else
            if ( (this.intTamañoApellidoPaterno <=50) && (caracter != '\b')
                 && ( (caracter < '0') || (caracter > '9')) ){
                    this.intTamañoApellidoPaterno += 1;
        }
    }//GEN-LAST:event_txtApePaternoKeyTyped

    private void txtApeMaternoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtApeMaternoKeyTyped
        // TODO add your handling code here:
        char caracter = evt.getKeyChar();
        this.intTamañoApellidoMaterno=this.txtApeMaterno.getText().length()+1;
        if( (caracter >= '0') && (caracter <= '9') ){
            evt.consume(); // ignorar el evento de teclado
        }
        if (this.intTamañoApellidoMaterno > 50){
            evt.consume();
        }
        if ((caracter == '\b') && (this.intTamañoApellidoMaterno > 1)){
            this.intTamañoApellidoMaterno -= 1;
        } else
            if ( (this.intTamañoApellidoMaterno <=50) && (caracter != '\b')
                 && ( (caracter < '0') || (caracter > '9'))){
                    this.intTamañoApellidoMaterno += 1;
        }
    }//GEN-LAST:event_txtApeMaternoKeyTyped

    private void cmbPerfilUsuarioKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_cmbPerfilUsuarioKeyTyped
        // TODO add your handling code here:
    }//GEN-LAST:event_cmbPerfilUsuarioKeyTyped
          
      private void buscarUsuario(){
        PerfilBE objPerfil=new PerfilBE();
        String NombrePerfil;
        NombrePerfil=(String)this.cmbPerfilUsuario.getSelectedItem();
        if(NombrePerfil.equals("--Seleccione--")){
            objPerfil.setCodPerfil(-1);
            this.objUsuarioBE.setCodPerfil(-1);
        }else{
            PerfilBE objPerfilBE = new PerfilBE();
            PerfilBL objPerfilBL = new PerfilBL();
            objPerfilBE=objPerfilBL.buscarPerfilNombre(this.cmbPerfilUsuario.getSelectedItem().toString());
            this.objUsuarioBE.setCodPerfil(objPerfilBE.getCodPerfil());
        }
        String nombreUsuario = "";
        nombreUsuario = this.txtNombres.getText();
        this.objUsuarioBE.setNombre(nombreUsuario);
        String ApellidoMaternoUsuario = "";
        ApellidoMaternoUsuario = this.txtApeMaterno.getText();
        this.objUsuarioBE.setApellidoMaterno(ApellidoMaternoUsuario);
        String ApellidoPaternoUsuario = "";
        ApellidoPaternoUsuario = this.txtApePaterno.getText();
        this.objUsuarioBE.setApellidoPaterno(ApellidoPaternoUsuario);
        this.objUsuarioBE.setNumeroDocumento("");

//        String CodigoUsuario = "";
//        CodigoUsuario = this.txtCodigo.getText();
        String CodigoUsuario ="";
        CodigoUsuario = (this.txtCodigo.getText());
        if (!CodigoUsuario.equals( "" ))
            this.objUsuarioBE.setCodUsuario(Integer.parseInt(CodigoUsuario));
//        EstadoBE objEstado=new EstadoBE();
//        objEstado.setIdEstado(-1);
//        this.objUsuarioBE.setObjEstado(objEstado);
        try {
            arrUsuarios = this.objUsuarioBL.listarUsuario(objUsuarioBE);
        } catch (Exception e) {
           JOptionPane.showMessageDialog(null,e.getMessage(),"Excepcion ",JOptionPane.ERROR_MESSAGE);
        }
        if(arrUsuarios!=null){
            if (!arrUsuarios.isEmpty()){
//                String fechaFinal = df.format(this.jdtFechaFin.getDate());
//                String fechaInicial = df.format(this.jdtFechaInicio.getDate());
//                if(fechaInicial.compareTo(fechaFinal)<0){
//                    cargarTabla(fechaInicial,fechaFinal,1);
//                  this.txaBarraEstado.setForeground(Color.BLACK);
//                  this.txaBarraEstado.setText("SSPII - Búsqueda exitosa");
//                }else{
//                    if(fechaInicial.compareTo(fechaFinal)==0){
                        cargarTabla(null,null,4);
//                         this.txaBarraEstado.setForeground(Color.BLACK);
//                        this.txaBarraEstado.setText("SSPII - Búsqueda exitosa");
//                    }else{
//                         this.txaBarraEstado.setForeground(Color.RED);
//                          this.txaBarraEstado.setText("SSPII ERROR - Verificar el rango de los filtros");
//                    }
//                }

            }else{
                JOptionPane.showMessageDialog(null,"Error en llenar la Tabla","Mensaje",JOptionPane.ERROR_MESSAGE);
            }
        }else{
            JOptionPane.showMessageDialog(null,"No se encontro ningun usuario","Mensaje",JOptionPane.ERROR_MESSAGE);
        }

    }

        private void cargarTabla(String fechaInicial,String fechaFinal, int modo){
        DefaultTableModel model = (DefaultTableModel) this.tblUsuario.getModel();
        model.setNumRows(0);
        for (UsuarioBE obj : arrUsuarios){
            PerfilBE perfil= new PerfilBE();

//            perfil.setIdPerfil(obj.getObjPerfil().getIdPerfil());
            perfil.setCodPerfil(obj.getCodPerfil());
//            perfil=objPerfilBL.buscarPerfil(perfil.getCodPerfil());
//            try {
//                perfil=objPerfilBL.buscarPerfil(perfil.getIdPerfil());
//            }catch(Exception ex){
//                JOptionPane.showMessageDialog(null,"No se encontro ningun perfil","Mensaje",JOptionPane.ERROR_MESSAGE);
//            }
//           if(modo==1){ //buscar usuario por fechas
//               if( ( fechaInicial.compareTo(df.format(obj.getDteFechaCreacion()))<0 || fechaInicial.compareTo(df.format(obj.getDteFechaCreacion()))==0) &&
//                   ( fechaFinal.compareTo(df.format(obj.getDteFechaCreacion()))>0 || fechaFinal.compareTo(df.format(obj.getDteFechaCreacion()))==0) ){
//                   llenarGrilla(obj,model,perfil);
//               }
//           }else{
                llenarGrilla(obj,model,perfil);
//           }
        }
        this.tblUsuario.setModel(model);
    }
    private void llenarGrilla(UsuarioBE obj, DefaultTableModel model,PerfilBE perfil){
//       
           PerfilBE objPerfilBE = new PerfilBE();
           PerfilBL objPerfilBL = new PerfilBL();
           objPerfilBE = objPerfilBL.buscarPerfil(perfil.getCodPerfil());
           Object[]  newRow = {obj.getCodUsuario(),obj.getNombre(), obj.getApellidoPaterno(), obj.getApellidoMaterno(), obj.getEstado(), objPerfilBE.getPerfil()};
           model.addRow(newRow);
//        }else{
//            if (obj.getEstado() == "Inactivo")  {
//                Object[]  newRow = {obj.getCodUsuario(),obj.getNombre(), obj.getApellidoPaterno(), obj.getApellidoMaterno(),"INACTIVO", perfil.getCodPerfil()};
//                model.addRow(newRow);
//            }
//        }

    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnBuscar;
    private javax.swing.JButton btnCerrar;
    private javax.swing.JButton btnEliminar;
    private javax.swing.JButton btnLimpiar;
    private javax.swing.JButton btnModificar;
    private javax.swing.JButton btnNuevo;
    private javax.swing.JComboBox cmbPerfilUsuario;
    private javax.swing.JLabel lblApeMaterno;
    private javax.swing.JLabel lblApePaterno;
    private javax.swing.JLabel lblCodigo;
    private javax.swing.JLabel lblNombres;
    private javax.swing.JLabel lblPerfilUsuario;
    private javax.swing.JPanel pnlBusquedaUsuario;
    private javax.swing.JPanel pnlDatosUsuario;
    private javax.swing.JPanel pnlListaUsuarios;
    private javax.swing.JScrollPane scpCarteras;
    private javax.swing.JTable tblUsuario;
    private javax.swing.JTextField txtApeMaterno;
    private javax.swing.JTextField txtApePaterno;
    private javax.swing.JTextField txtCodigo;
    private javax.swing.JTextField txtNombres;
    // End of variables declaration//GEN-END:variables

}
